home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / ada / c01oop.zip / CPPWKBK / CPPV5-3.CPP < prev    next >
C/C++ Source or Header  |  1992-08-25  |  884b  |  67 lines

  1. #define HEADER "C++ Problem 5.3 by Rick Conn using Borland C++"
  2.  
  3. #include <stdio.h>
  4.  
  5. enum pet_kind {doggy, kitty, neither};
  6.  
  7. class pet {
  8.   pet_kind pk;
  9. public:
  10.   pet(pet_kind);
  11.   virtual void speak(void);
  12.   pet_kind type(void);
  13. };
  14.  
  15. class dog : public pet {
  16. public:
  17.   dog();
  18.   void speak(void);
  19. };
  20.  
  21. class cat : public pet {
  22. public:
  23.   cat();
  24.   void speak(void);
  25. };
  26.  
  27. pet::pet(pet_kind kind) {
  28.   pk = kind;
  29. }
  30.  
  31. void pet::speak(void) { }
  32.  
  33. pet_kind pet::type(void) {
  34.   return pk;
  35. }
  36.  
  37. dog::dog() : pet(doggy) {
  38.   // nothing to do
  39. }
  40.  
  41. void dog::speak(void) {
  42.   printf("woof\n");
  43. }
  44.  
  45. cat::cat() : pet(kitty) {
  46.   // nothing to do
  47. }
  48.  
  49. void cat::speak(void) {
  50.   printf("meow\n");
  51. }
  52.  
  53. void talk (pet *p) {
  54.   p -> speak();
  55. }
  56.  
  57. void main(void)
  58. {
  59.   printf("%s\n", HEADER);
  60.  
  61.   dog scotty;
  62.   cat fluffy;
  63.   
  64.   talk(&scotty);
  65.   talk(&fluffy);
  66. }
  67.